package jdbc;

import java.sql.*;

/**
 * JDBC API详解:DriverManager
 */
public class ResultSetDemo {
    public static void main(String[] args) throws SQLException {
        // JDBC 连接数据库，第一步：先创建连接需要的对象
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            // 第一步：利用反射加载jdbc驱动包
            //Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 5.0 之后就可以不写这行代码，底层会自动加载jar包中META-INF\services\java.sql.Driver文件中的驱动类

            // 第二步：建立连接
            /*
                参数一，url连接路径：
                    语法：
                        jdbc:mysql://ip地址(域名):端口号//数据库名称?参数键值对1&参数键值对2...
                    细节:
                        如果连接的是本机mysql服务器,并且mysql服务默认端口号是3306,
                        则url可以简写成: jdbc:mysql:///数据库名称?键值对1&键值对2...
                        配置useSSL=false参数,禁用安全连接方式,解决警告提示
             */
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_database?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true",
                    "root","1234");

            // 第三步：选择对应的sql语句
            ps = conn.prepareStatement("select * from employees");
            // 提交到数据库
            ps.execute();
            // 返回结果集（查询结果）
            rs = ps.executeQuery();
            // 展开结果集（遍历结果集，获取结果）
            while (rs.next()) { // 判断当前行是否有数据
                System.out.print(rs.getInt(1) + " ");
                System.out.print(rs.getString(2) + " ");
                System.out.print(rs.getString(3) + " ");
                System.out.print(rs.getString(4) + " ");
                System.out.print(rs.getInt(5) + " ");
                System.out.print(rs.getString(6) + " ");
                System.out.print(rs.getString(7) + " ");
                System.out.print(rs.getString(8));
                System.out.println();
            }
        }catch (SQLException e){
            // 处理JDBC错误
            e.printStackTrace();
        } catch (Exception e) {
            // 处理Class.forName()异常
            e.printStackTrace();
        } finally {// 关闭资源
            if (conn != null){
                conn.close();
            }
            if (ps != null){
                ps.close();
            }
            if (rs != null){
                rs.close();
            }
        }
    }
}
